# -*- coding: UTF-8 -*-

## 定义数组
numbers = [5, 2, 4, 3, 1]

# 取得长度
length = len(numbers)
end = length - 1

for i in range(0, length - 1):
    if i > end:
        break
    # 记录最小位置
    minIndex = i
    maxIndex = i
    for j in range(i + 1, end + 1):
        # 重复挑选 `最小/最大`的元素 ，放在起始位置
        if numbers[j] < numbers[minIndex]:
            minIndex = j

        # 优化，挑选最大数据
        if numbers[j] > numbers[maxIndex]:
            maxIndex = j

    if i != minIndex:
        # 判断是否需要交换数据
        numbers[i], numbers[minIndex] = numbers[minIndex], numbers[i]

    # 数据被转移的意外情况。
    if i == maxIndex:
        maxIndex = minIndex
    if end != maxIndex:
        # 判断是否需要交换数据
        numbers[end], numbers[maxIndex] = numbers[maxIndex], numbers[end]
    end -= 1

print(numbers)
